home *** CD-ROM | disk | FTP | other *** search
/ com!online 2005 May / com_0505_1.iso / opensource / top10 / amc_install.exe / {app} / Scripts / OceanDVD (PL) small pic.ifs < prev    next >
Encoding:
Text File  |  2005-01-27  |  16.5 KB  |  493 lines

  1. // GETINFO SCRIPTING
  2. // OceanDVD (PL) import info & small picture
  3.  
  4. (***************************************************
  5.  *  Movie information & small picture importation  *
  6.  *    script for OceanDVD http://www.oceandvd.pl   *
  7.  *    c) 2003 Grzegorz Jankowski   (child@wp.pl)   *
  8.  *   based on script 'Filmweb (PL) small pic.ifs'  *
  9.  *            by Piotr Kardasz & Adma's            *
  10.  *                                                 *
  11.  *  For use with Ant Movie Catalog 3.4.2           *
  12.  *  www.ant.be.tf/moviecatalog ╖╖╖ www.buypin.com  *
  13.  ***************************************************)
  14.  
  15. program FilmWeb;
  16. var
  17.   MovieName: string;
  18.  
  19. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  20. var
  21.   i: Integer;
  22. begin
  23.   result := -1;
  24.   if StartAt < 0 then
  25.     StartAt := 0;
  26.   for i := StartAt to List.Count-1 do
  27.     if Pos(Pattern, List.GetString(i)) <> 0 then
  28.     begin
  29.       result := i;
  30.       Break;
  31.     end;
  32. end;
  33.  
  34. procedure DelSpace(var Value: String);
  35. var
  36.   FullValue: String;
  37.   Counter: Integer;
  38. begin
  39.   if Value <> '' then
  40.   begin
  41.     FullValue := FullValue + StrGet(Value, 1);
  42.     for Counter := 2 to Length(Value) do
  43.     begin
  44.       if StrGet(Value, Counter) <> ' ' then
  45.         FullValue := FullValue + StrGet(Value, Counter)
  46.       else
  47.         if StrGet(FullValue, Length(FullValue)) <> ' ' then
  48.           FullValue := FullValue + ' ';
  49.     end;
  50.     Value := FullValue;
  51.   end
  52. end;
  53.  
  54. procedure DecodeHTML(var Value: String);
  55. var
  56.   FullValue, CharCode: String;
  57.   Counter: Integer;
  58. begin
  59.   if Value <> '' then
  60.   begin
  61.     FullValue := '';
  62.     Counter := 1;
  63.     repeat
  64.       if StrGet(Value, Counter) <> '&' then
  65.         begin
  66.           CharCode := copy(Value, Counter, 1);
  67.           case CharCode of
  68.             '▒': CharCode := '╣';
  69.             '╢': CharCode := '£';
  70.             'í': CharCode := 'Ñ';
  71.             '╝': CharCode := 'ƒ';
  72.             'ª': CharCode := 'î';
  73.             '¼': CharCode := 'Å';
  74.           end;
  75.           FullValue := FullValue + CharCode;
  76.           Counter := Counter + 1;
  77.         end
  78.       else
  79.         begin
  80.           CharCode := copy(Value, Counter, 7);
  81.           case CharCode of
  82.             'ą': FullValue := FullValue + '╣';
  83.             'ć': FullValue := FullValue + 'µ';
  84.             'ę': FullValue := FullValue + 'Ω';
  85.             'ł': FullValue := FullValue + '│';
  86.             'ń': FullValue := FullValue + '±';
  87.             'ó': FullValue := FullValue + '≤';
  88.             'ś': FullValue := FullValue + '£';
  89.             'ź': FullValue := FullValue + 'ƒ';
  90.             'ż': FullValue := FullValue + '┐';
  91.             'Ą': FullValue := FullValue + 'Ñ';
  92.             'Ć': FullValue := FullValue + '╞';
  93.             'Ę': FullValue := FullValue + '╩';
  94.             'Ł': FullValue := FullValue + 'ú';
  95.             'Ń': FullValue := FullValue + '╤';
  96.             'Ó': FullValue := FullValue + '╙';
  97.             'Ś': FullValue := FullValue + 'î';
  98.             'Ź': FullValue := FullValue + 'Å';
  99.             'Ż': FullValue := FullValue + '»';
  100.             'Š': FullValue := FullValue + ' ';
  101.             'š': FullValue := FullValue + 'í';
  102.             'Ţ': FullValue := FullValue + 'í';
  103.             'ţ': FullValue := FullValue + 'ú';
  104.             'Ť': FullValue := FullValue + 'ñ';
  105.             'ť': FullValue := FullValue + 'Ñ';
  106.             'Ŧ': FullValue := FullValue + 'î';
  107.             'ŧ': FullValue := FullValue + 'º';
  108.             'Ũ': FullValue := FullValue + '¿';
  109.             'ũ': FullValue := FullValue + '⌐';
  110.             'Ű': FullValue := FullValue + '¬';
  111.             'ű': FullValue := FullValue + '½';
  112.             'Ų': FullValue := FullValue + '¼';
  113.             'ų': FullValue := FullValue + '¡';
  114.             'Ŵ': FullValue := FullValue + '«';
  115.             'ŵ': FullValue := FullValue + '»';
  116.             'Ŷ': FullValue := FullValue + '░';
  117.             'ŷ': FullValue := FullValue + '▒';
  118.             'Ÿ': FullValue := FullValue + '▓';
  119.             'ƀ': FullValue := FullValue + '┤';
  120.             'Ɓ': FullValue := FullValue + '╡';
  121.             'Ƃ': FullValue := FullValue + '╢';
  122.             'ƃ': FullValue := FullValue + '╖';
  123.             'Ƅ': FullValue := FullValue + '╕';
  124.             'ƅ': FullValue := FullValue + '╣';
  125.             'Ɔ': FullValue := FullValue + '║';
  126.             'Ƈ': FullValue := FullValue + '╗';
  127.             'ƈ': FullValue := FullValue + '╝';
  128.             'Ɖ': FullValue := FullValue + '╜';
  129.             'Ɛ': FullValue := FullValue + '╛';
  130.             'Ƒ': FullValue := FullValue + '┐';
  131.             'ƒ': FullValue := FullValue + '└';
  132.             'Ɠ': FullValue := FullValue + '┴';
  133.             'Ɣ': FullValue := FullValue + '┬';
  134.             'ƕ': FullValue := FullValue + '├';
  135.             'Ɩ': FullValue := FullValue + '─';
  136.             'Ɨ': FullValue := FullValue + '┼';
  137.             'Ƙ': FullValue := FullValue + '╞';
  138.             'ƙ': FullValue := FullValue + '╟';
  139.             'Ȁ': FullValue := FullValue + '╚';
  140.             'ȁ': FullValue := FullValue + '╔';
  141.             'Ȃ': FullValue := FullValue + '╩';
  142.             'ȃ': FullValue := FullValue + '╦';
  143.             'Ȅ': FullValue := FullValue + '╠';
  144.             'ȅ': FullValue := FullValue + '═';
  145.             'Ȇ': FullValue := FullValue + '╬';
  146.             'ȇ': FullValue := FullValue + '╧';
  147.             'Ȉ': FullValue := FullValue + '╨';
  148.             'ȉ': FullValue := FullValue + '╤';
  149.             'Ȑ': FullValue := FullValue + '╥';
  150.             'ȑ': FullValue := FullValue + '╙';
  151.             'Ȓ': FullValue := FullValue + '╘';
  152.             'ȓ': FullValue := FullValue + '╒';
  153.             'Ȕ': FullValue := FullValue + '╓';
  154.             'ȕ': FullValue := FullValue + '╫';
  155.             'Ȗ': FullValue := FullValue + '╪';
  156.             'ȗ': FullValue := FullValue + '┘';
  157.             'Ș': FullValue := FullValue + '┌';
  158.             'ș': FullValue := FullValue + '█';
  159.             'Ƞ': FullValue := FullValue + '▄';
  160.             'ȡ': FullValue := FullValue + '▌';
  161.             'Ȣ': FullValue := FullValue + '▐';
  162.             'ȣ': FullValue := FullValue + '▀';
  163.             'Ȥ': FullValue := FullValue + 'α';
  164.             'ȥ': FullValue := FullValue + 'ß';
  165.             'Ȧ': FullValue := FullValue + 'Γ';
  166.             'ȧ': FullValue := FullValue + 'π';
  167.             'Ȩ': FullValue := FullValue + 'Σ';
  168.             'ȩ': FullValue := FullValue + 'σ';
  169.             'Ȱ': FullValue := FullValue + 'µ';
  170.             'ȱ': FullValue := FullValue + 'τ';
  171.             'Ȳ': FullValue := FullValue + 'Φ';
  172.             'ȳ': FullValue := FullValue + 'Θ';
  173.             'ȴ': FullValue := FullValue + 'Ω';
  174.             'ȵ': FullValue := FullValue + 'δ';
  175.             'ȶ': FullValue := FullValue + '∞';
  176.             'ȷ': FullValue := FullValue + 'φ';
  177.             'ȸ': FullValue := FullValue + 'ε';
  178.             'ȹ': FullValue := FullValue + '∩';
  179.             'ɀ': FullValue := FullValue + '≡';
  180.             'Ɂ': FullValue := FullValue + '±';
  181.             'ɂ': FullValue := FullValue + '≥';
  182.             'Ƀ': FullValue := FullValue + '≤';
  183.             'Ʉ': FullValue := FullValue + '⌠';
  184.             'Ʌ': FullValue := FullValue + '⌡';
  185.             'Ɇ': FullValue := FullValue + '÷';
  186.             'ɇ': FullValue := FullValue + '≈';
  187.             'Ɉ': FullValue := FullValue + '°';
  188.             'ɉ': FullValue := FullValue + '∙';
  189.             'ɐ': FullValue := FullValue + '·';
  190.             'ɑ': FullValue := FullValue + '√';
  191.             'ɒ': FullValue := FullValue + 'ⁿ';
  192.             'ɓ': FullValue := FullValue + '²';
  193.             'ɔ': FullValue := FullValue + '■';
  194.             'ɕ': FullValue := FullValue + ' ';
  195.             '&#x%DF;': FullValue := FullValue + '▀';
  196.             '4': FullValue := FullValue + '"';
  197.             '”': FullValue := FullValue + '"';
  198.             '„': FullValue := FullValue + '"';
  199.             '–': FullValue := FullValue + '-';
  200.           else
  201.             FullValue := FullValue + CharCode;  
  202.           end;
  203.           Counter := Counter + 7;
  204.         end;
  205.     until Counter > Length(Value);
  206.     HTMLDecode(FullValue);
  207.     Value := FullValue;
  208.   end
  209. end;
  210.  
  211. procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
  212. var
  213.   Line: string;
  214.   MovieTitle, MovieAddress: string;
  215.   StartPos, EndPos: Integer;
  216. begin
  217.   LineNr := FindLine('<li>', Page, LineNr);
  218.   if LineNr > -1 then
  219.   begin
  220.     PickTreeAdd('Znaleziono filmy:', '');
  221.     Line := Page.GetString(LineNr);
  222.     repeat
  223.       repeat
  224.         StartPos := pos('<li>', Line) + 4;
  225.         Line := copy(Line, StartPos, Length(Line) - StartPos + 1);
  226.         StartPos := pos('href="', Line) + 6;
  227.         Line := copy(Line, StartPos, Length(Line) - StartPos + 1);
  228.         MovieAddress := copy(Line, 1, pos('">', Line) - 1);
  229.         MovieAddress := 'http://www.oceandvd.pl/' + MovieAddress;
  230.         //MovieAddress := 'c:/film.htm';
  231.         StartPos := pos('">', Line) + 2;
  232.         Line := copy(Line, StartPos, Length(Line) - StartPos + 1);
  233.         MovieTitle := copy(Line, 1, pos('</a>', Line) - 1);
  234.         DecodeHTML(MovieTitle);
  235.         HTMLRemoveTags(MovieTitle);
  236.         PickTreeAdd(MovieTitle, MovieAddress);
  237.       until pos('<li>', Line) = 0;
  238.       LineNr := LineNr + 1;
  239.       Line := Page.GetString(LineNr);
  240.     until pos('<li>', Line) = 0;
  241.   end
  242.   else
  243.     break;
  244. end;
  245.  
  246. procedure AnalyzePage(Address: string);
  247. var
  248.   Page: TStringList;
  249.   LineNr: Integer;
  250. begin
  251.   Page := TStringList.Create;
  252.   Page.Text := GetPage(Address);
  253.   //Page.LoadFromFile(Address);
  254.   if pos('Wynik wyszukiwania', Page.Text) = 0 then
  255.     AnalyzeMoviePage(Page)
  256.   else
  257.   begin
  258.     PickTreeClear;
  259.     LineNr := 0;
  260.     AddMoviesTitles(Page, LineNr);
  261.     if PickTreeExec(Address) then
  262.       AnalyzePage(Address);
  263.   end;
  264.   Page.Free;
  265. end;
  266.  
  267. procedure AnalyzeMoviePage(Page: TStringList);
  268. var
  269.   Line, Value, FullValue: string;
  270.   LineNr, Counter: Integer;
  271.   StartPos, EndPos: Integer;
  272. begin
  273.  
  274.   // Tytu│ polski
  275.   LineNr := FindLine('class="tytuly"><b>', Page, 0);
  276.   if LineNr > -1 then
  277.   begin
  278.     Line := Page.GetString(LineNr);
  279.     StartPos := pos('class="tytuly"><b>', Line) + 18;
  280.     Line := copy(Line, StartPos, Length(Line) - StartPos);
  281.     EndPos := pos('(', Line);
  282.     if EndPos > 0
  283.     then EndPos := EndPos - 2
  284.     else EndPos := pos('<', Line) - 1;
  285.     Line := copy(Line, 1, EndPos);
  286.     DecodeHTML(Line);
  287.     SetField(fieldTranslatedTitle, Line);
  288.   end
  289.  
  290.   // Tytu│ oryginalny
  291.   LineNr := FindLine('class="tytuly"><b>', Page, 0);
  292.   if LineNr > -1 then
  293.   begin
  294.     Line := Page.GetString(LineNr);
  295.     StartPos := pos('class="tytuly"><b>', Line) + 18;
  296.     Line := copy(Line, StartPos, Length(Line) - StartPos);
  297.     StartPos := pos('(', Line);
  298.     if StartPos > 0 then
  299.     begin
  300.        StartPos := StartPos + 1;
  301.        EndPos := pos(')', Line);
  302.     end
  303.     else
  304.     begin
  305.       StartPos := 1;
  306.       EndPos := pos('<', Line);
  307.     end
  308.     Line := copy(Line, StartPos, EndPos-StartPos);
  309.     DecodeHTML(Line);
  310.     SetField(fieldOriginalTitle, Line);
  311.     end
  312.  
  313.   // îrednia ocena  
  314.   LineNr := FindLine('rednia ocena:', Page, 0);
  315.   if LineNr > -1 then
  316.   begin
  317.     Line := Page.GetString(LineNr);
  318.     StartPos := pos('rednia ocena:', Line) + 10;
  319.     Line := copy(Line, StartPos, Length(Line) - StartPos);
  320.     StartPos := pos('">', Line) + 2;
  321.     Line := copy(Line, StartPos, Length(Line) - StartPos);  
  322.     Value := IntToStr(Round(StrToInt(StrGet(Line, 1), 0) + (StrToInt(StrGet(Line, 3), 0) / 10) + (StrToInt(StrGet(Line, 4), 0) / 100)));
  323.     SetField(fieldRating, Value);
  324.   end
  325.  
  326.   // Kategoria
  327.   LineNr := FindLine('kat_', Page, 0);
  328.   if LineNr > -1 then
  329.   begin
  330.     Line := Page.GetString(LineNr);
  331.     StartPos := pos('kat_', Line) + 4;
  332.     Line := copy(Line, StartPos, Length(Line) - StartPos);
  333.     Line := copy(Line, 1, pos('.jpg', Line) - 1);
  334.     case Line of
  335.        '9': Value := 'Animowany';
  336.        '2': Value := 'Dramat';
  337.        '6': Value := 'Erotyczny';
  338.        '10': Value := 'Film Polski';
  339.        '1': Value := 'Horror';
  340.        '3': Value := 'Komedia';
  341.        '11': Value := 'Przygodowy';
  342.        '8': Value := 'Science Fiction';
  343.        '4': Value := 'Sensacyjny';
  344.        '5': Value := 'Thriller';
  345.     else
  346.       Value := '';
  347.     end;
  348.     SetField(fieldCategory, Value);
  349.   end
  350.     
  351.   // Kraj
  352.   LineNr := FindLine('produkcja:', Page, 0);
  353.   if LineNr > -1 then
  354.   begin
  355.     Line := Page.GetString(LineNr+1);
  356.     HTMLRemoveTags(Line);
  357.     DecodeHTML(Line);
  358.     DelSpace(Line);
  359.     Line := copy(Line, 2, Length(Line) - 1);
  360.     SetField(fieldCountry, Line);
  361.   end    
  362.   
  363.   // Rok produkcji
  364.   LineNr := FindLine('produkcja:', Page, 0);
  365.   if LineNr > -1 then
  366.   begin
  367.     Line := Page.GetString(LineNr+2);
  368.     HTMLRemoveTags(Line);
  369.     DecodeHTML(Line);
  370.     SetField(fieldYear, Line);
  371.   end
  372.  
  373.   // Re┐yseria
  374.   LineNr := FindLine('yseria:</b></td>', Page, 0);
  375.   if LineNr > -1 then
  376.   begin
  377.     Line := Page.GetString(LineNr+1);
  378.     HTMLRemoveTags(Line);
  379.     DecodeHTML(Line);
  380.     DelSpace(Line);
  381.     Line := copy(Line, 2, Length(Line) - 1);
  382.     SetField(fieldDirector, Line);
  383.   end
  384.  
  385.   // Producent (dystrybutor)
  386.   LineNr := FindLine('Dystrybucja:', Page, 0);
  387.   if LineNr > -1 then
  388.   begin
  389.     Line := Page.GetString(LineNr);
  390.     StartPos := pos('Dystrybucja:', Line) + 13;
  391.     Line := copy(Line, StartPos, Length(Line) - StartPos + 1);
  392.     DecodeHTML(Line);
  393.     SetField(fieldProducer, Line);
  394.   end  
  395.  
  396.   // Czas trwania
  397.   LineNr := FindLine('czas trwania:', Page, 0);
  398.   if LineNr > -1 then
  399.   begin
  400.     Line := Page.GetString(LineNr+1);
  401.     StartPos := pos('>', Line) + 1;
  402.     Line := copy(Line, StartPos, Length(Line) - StartPos);  
  403.     Value := copy(Line, 1, pos(' min', Line) - 1);
  404.     SetField(fieldLength, Value);
  405.   end
  406.   
  407.   // Opis filmu
  408.   LineNr := FindLine('<!-- OPIS FILMU -->', Page, 0);
  409.   if LineNr > -1 then
  410.   begin
  411.     Line := Page.GetString(LineNr+1);
  412.     DecodeHTML(Line);
  413.     HTMLRemoveTags(Line);
  414.     DelSpace(Line);
  415.     SetField(fieldDescription, Line);
  416.   end     
  417.   
  418.   // Obsada
  419.   LineNr := FindLine('wystΩpuj', Page, 0);
  420.   if LineNr > -1 then
  421.   begin
  422.     Line := Page.GetString(LineNr);
  423.     Value := '';
  424.     repeat
  425.       LineNr := LineNr + 1;
  426.       Line := Page.GetString(LineNr);
  427.       HTMLRemoveTags(Line);
  428.       Value := Value + Line;
  429.     until pos('<td>', Line) = 0;
  430.     DelSpace(Value);
  431.     Value := copy(Value, 2, Length(Line) - 1);
  432.     DecodeHTML(Value); 
  433.     SetField(fieldActors, Value);
  434.   end
  435.   
  436.   // Komentarz (Dane techniczne)
  437.   Line := '';
  438.   LineNr := FindLine('Dodatki', Page, 0);
  439.   if LineNr > -1 then
  440.   begin
  441.     Line := Page.GetString(LineNr);
  442.     Line := Line+''#13#10'';
  443.   end
  444.   LineNr := FindLine('<!-- OPIS TECHNICZNY FILMU -->', Page, 0);
  445.   if LineNr > -1 then
  446.   begin
  447.     Line := Line + Page.GetString(LineNr+2)+''#13#10''+Page.GetString(LineNr+3);
  448.   end
  449.     DecodeHTML(Line);
  450.     HTMLRemoveTags(Line);
  451.     DelSpace(Line);
  452.     SetField(fieldComments, Line);
  453.  
  454.   //URL
  455.   begin
  456.     setField(fieldURL,'http://www.oceandvd.pl/search.php?searchtype=1&cmd=find&phrase='+UrlEncode(MovieName));
  457.   end
  458.   
  459.  //Foto
  460.   LineNr:= FindLine('alt="ok│adka"', Page, 0);
  461.   if LineNr > -1
  462.  then begin
  463.     Line:= Page.GetString(LineNr);
  464.     StartPos:= Pos('img src=', Line) + 8;
  465.     Line:= Copy(Line, StartPos, Length(Line));
  466.     Value:= Copy(Line, 2, Pos('alt="ok│adka"', Line) - 4);
  467.     Value:= 'http://www.oceandvd.pl/' + Value;
  468.     HTMLRemoveTags(Value);
  469.     DecodeHTML(Value);
  470.     DelSpace(Value);
  471.     GetPicture(Value, False); // False = nie przechowuj zdjΩcia na zewnΩtrz ; przechowuj w pliku katalogu
  472.   end
  473.  
  474.   DisplayResults;
  475. end;
  476.  
  477. begin
  478.   if CheckVersion(3,4,2) then
  479.   begin
  480.     MovieName := GetField(fieldOriginalTitle);
  481.     if MovieName = '' then
  482.       MovieName := GetField(fieldTranslatedTitle);
  483.     if Input('OceanDVD Import', 'Podaj tytu│ filmu:', MovieName) then
  484.     begin
  485.       AnalyzePage('http://www.oceandvd.pl/search.php?searchtype=1&cmd=find&phrase='+UrlEncode(MovieName));
  486.       //AnalyzePage('c:/lista.htm');
  487.     end;
  488.   end else
  489.     ShowMessage('Skrypt wymaga programu Ant Movie Catalog w wersji 3.4.2 lub nowszej');
  490. end.
  491.  
  492.  
  493.